package com.zues.rabbit_self_test.service.hello;

import com.rabbitmq.client.*;
import com.zues.rabbit_self_test.utils.RabbitMqUtils;

/**
 * @ClassName Consumer
 * @Description TODO
 * @Author zeus
 * @Date 6/12/2025 2:20 下午
 * @Version 1.0
 **/
public class Consumer {
    private final static String QUEUE_NAME = "hello";


    public static void main(String[] args) throws Exception {
        Channel channel = RabbitMqUtils.getChannel();
        System.out.println("等待接受消息...");
        //推送的消息如何进行消费的接口回调
        DeliverCallback deliverCallback = (consumerTag, delivery) -> {
            String message = new String(delivery.getBody(), "UTF-8");
            System.out.println(" 接收到消息： " + message);
        };
        //取消消费的一个回调接口 如在消费的时候队列被删除掉了
        CancelCallback cancelCallback = (consumerTag) -> {
            System.out.println("消费消息被中断");
        };
        /**
         * 消费者消费消息
         * 1. 消费哪个队列
         * 2. 消费成功之后是否要自动应答，true 代表自动应答 false 手动应答
         * 3. 消费者未成功消费的回调
         */
        channel.basicConsume(QUEUE_NAME, true, deliverCallback, cancelCallback);

    }


}
